package leetCode;

import javax.xml.bind.annotation.XmlInlineBinaryData;
import java.util.Arrays;
import java.util.Collections;

/**
 * 给你一个正整数数组 arr（可能存在重复的元素），请你返回可在 一次交换（交换两数字 arr[i] 和 arr[j] 的位置）后得到的、按字典序排列小于 arr 的最大排列。
 * <p>
 * 如果无法这么操作，就请返回原数组。
 *
 * @author 司松坡
 * @createTime 2023年04月03日
 */
public class LeetCode1053 {
    public int[] prevPermOpt1(int[] arr) {
        for (int i = arr.length-2; i >= 0 ; i--) {
            if (arr[i]>arr[i+1]){
                int j = arr.length - 1;
                while (arr[j] >= arr[i] || arr[j] == arr[j - 1]) {
                    j--;
                }
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
                break;
            }
        }
        return arr;
    }
}
